ColdFusion ORM EntityLoadで返ってきたデータ出力について
先日の「ColdFusion ORMを試してみる」の記事で実際にORM_TEST1テーブルからEntityLoad()を使用してデータを取得したまではいいのですが、それを実際にHTMLページとして出力するにはどうしたらいいのか?とちょっと疑問に思ったので、備忘録としてまとめました。
そのままマニュアルを読んでいくとcfscript内での出力方法は掲載されていました。
参考までにcfscript内でどのように記述するかです。
<cfscript> orm_sample = EntityLoad("ORM_TEST1"); testdata = orm_sample.getorm_test2(); WriteOutput("<b>" & orm_sample.getname() & " " & orm_sample.getdivision() & " " & orm_sample.getphone() & "</b> has " & ArrayLen(orm_sample) & "<br>"); if (ArrayLen(testdata) > 0) { for(j = 1; j <= ArrayLen(testdata); j ++) { testdata = testdata[j]; WriteOutput(testdata.getcustomer_name() & "<br>"); } } </cfscript>
とWriteOutPutを使って出力することになります。
慣れるといいかもしれませんが、やはりCFLOOPタグ等を使って出力をしたいと思ってしまいます。
ということで、CFLOOPタグ等で利用する為にはEntityLoadで返されたデータを通常のquery形式に変換することで解決できます。
entityToQueryという便利な関数がありますので、それを使ってquery形式に変換します。
sample5.cfmは以下の通りになります。
<cfscript> orm_test1 = EntityLoad("ORM_TEST1"); </cfscript> <cfset orm_test1_convert = entityToQuery(orm_test1)> <cfdump var="#orm_test1#"> <!--- EntityLoadで返ってきたArray ---> <cfdump var="#orm_test1_convert#"> <!--- entityToQueryでquery形式に変換したデータセット ---> <p> <table border="1"> <tr> <td> ID </td> <td> 名前 </td> <td> 部署 </td> <td> 電話 </td> </tr> <cfoutput query="orm_test1_convert"> <!--- 通常のクエリ結果と同様に扱えます ---> <tr> <td> #orm_test1_convert.ID# </td> <td> #orm_test1_convert.name# </td> <td> #orm_test1_convert.division# </td> <td> #orm_test1_convert.phone# </td> </tr> </cfoutput> </table>